// v1.0 10/07/13 created as a math test tool for PBVS

#ifndef __PBVS_HPP__
#define __PBVS_HPP__

#include "opencv2/objdetect/objdetect.hpp"
//#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/features2d.hpp"     // SURF & SIFT headers have been moved here!!!!
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/imgproc/imgproc_c.h"

#include <iostream>
#include <vector>
#include <stdio.h>

//#include "OpenCV/MatWork.hpp"
#include "MatWork.hpp"

class PBVS
{
private:

	double f, hro_w, hro_h, u0, v0;
	cv::Mat K, P0;

public:

	PBVS();

	// Passing data constructor with data in general abstract form, i.e., argc & argv**
	// PBVS()

	~PBVS();

	int PBVS::C170Project(const cv::Mat P_inp, cv::Mat& p);

	int PBVS::simulator();

	// Params should be made generic
	int udpateParam(double f, double hro_w, double hro_h, double u0, double v0);
};

#endif